package org.zzk.dao;

import lombok.Getter;

import java.util.Arrays;

@Getter
public enum CommandType {
    // 基础命令
    HEARTBEAT((byte) 0x01, "心跳检测"),
    ERROR((byte) 0xFF, "错误响应"),

    // 匹配相关
    MATCH_REQUEST((byte) 0x10, "匹配请求"),
    MATCH_SUCCESS((byte) 0x11, "匹配成功"),
    MATCH_FAILED((byte) 0x12, "匹配失败"),

    // 游戏指令
    MOVE((byte) 0x21, "棋步广播"),       // 原0x21
    UNDO_REQUEST((byte) 0x22, "悔棋请求"),
    DRAW_OFFER((byte) 0x23, "提和请求"),

    // 游戏状态
    GAME_START((byte) 0x30, "游戏开始"),
    GAME_OVER((byte) 0x31, "游戏结束"),
    GAME_SAVE((byte) 0x32, "游戏保存");

    // Getter方法
    private final byte code;
    private final String description;

    CommandType(byte code, String description) {
        this.code = code;
        this.description = description;
    }

    // 通过code获取枚举
    public static CommandType fromCode(byte code) {
        return Arrays.stream(values())
                .filter(c -> c.code == code)
                .findFirst()
                .orElse(ERROR); // 默认返回错误类型
    }
}
